草庐IT

Java final 与 C++ const

全部标签

c++ - "const"声明有助于编译器 (GCC) 生成更快的代码吗?

这个问题在这里已经有了答案:Doesconst-correctnessgivethecompilermoreroomforoptimization?(7个答案)关闭8年前。const声明是否有助于编译器(GCC)生成更快的代码,还是它们仅对可读性和正确性有用?ZedShaw认为const在C/C++中没有用或被过度使用:Nextisallthebizarrefascinationwithconst.ForsomeoddreasonC++lovestomakeyouslapconstoneverypartofadeclaration,andyetIgetthesameendresulta

c++ 传递字符串文字而不是 const std::string&?

我有以下代码,使用g++编译时没有警告(-Wall-pedantic)#include#includeusingnamespacestd;classFoo{public:Foo(conststd::string&s):str(s){}voidprint(){cout但是当我运行它时,只打印出换行符。发生了什么事?如果我在里面做这个:stringtemp("snoop");Foof(temp);f.print();然后就可以正常工作了! 最佳答案 之所以失败,是因为它实际上在幕后编译为以下内容。Fooo(std::string("wu

c++ - 有效地 const_cast-ing 常量引用参数

我有一个成员函数,它接受另一个对象的常量引用参数。我想const_cast这个参数以便在成员函数中轻松使用它。为此,以下哪个代码更好?:voidAClass::AMember(constBClass&_BObject){//FORM#1-Castasanobject:BClassBObject=const_cast(_BObject);//...}voidAClass::AMember(constBClass&_BObject){//FORM#2-Castasareference:BClass&BObject=const_cast(_BObject);//...}你能比较一下这两种形式

c++ - 为什么我可以使用 const char* 作为 std::map<std::string, int> 中的键

我已经定义了一个数据结构std::mapa;我发现我可以像这样传递constchar*作为键:a["abc"]=1;哪个函数提供了从constchar*到std::string的自动类型转换? 最佳答案 std::string有一个constructorthatallowstheimplicitconversionfromconstchar*.basic_string(constCharT*s,constAllocator&alloc=Allocator());表示隐式转换,例如std::strings="Hello";是允许的。这

C++ const_cast 用法而不是 C 风格的转换

为什么会这样?constinti0=5;//inti1=const_cast(i0);//compilationerrorinti2=(int)i0;//okayinti3=5;//constinti4=const_cast(i3);//compilationerrorconstinti5=(constint)i3;//okay 最佳答案 constinti0=5;//inti1=const_cast(i0);//compilationerrorinti2=(int)i0;//okayinti3=5;//constinti4=con

c++ - Delphi PChar 到 C++ const char*

我正在尝试使用native程序中的C++dll。我正在按照解释的虚拟方法场景here假设我的C++函数签名的形式是intSetup(constchar*szIp,constchar*szPort);而对应的delphi签名为functionSetup(ip,port:PChar):Integer:virtual;cdecl;abstract;我可以从delphi程序的某个地方调用pObj.Setup('192.168.1.100','97777');控件进入dll,但是szIp和szPort形参只接收我从delphi程序传过来的ip和port的第一个字符。我知道它与在delphi中正确

c++ - Const 在类型之前还是之后?

这个问题在这里已经有了答案:C++:constreference,beforevsaftertype-specifier(7个答案)关闭8年前。我有以下代码:stringconst&operator[](size_tindex)const{returnelems[index];}不应该是:conststring&?

c++ - 为什么我可以在 C++11 中用 const 函数修改类?

我是CPP的新手,我不知道为什么setValue()const在它是一个const的同时工作。为什么该类允许从constpublic进行修改看起来真的很奇怪,在g++-Wall或MSVisualC++上没有错误这是我的代码:主要.cpp#include#include#include"DArray.h"intmain(void){DArraydarray(1);darray.setValue(0,42);assert(darray.getValue(0)==42);darray.~DArray();system("pause");return0;}DArray.hclassDArray

c++ - 如何在 C++ 中将 Foo** 指针转换为 const Foo**

我有classFred{public:voidinspect()const{};voidmodify(){};};intmain(){constFredx=Fred();Fred*p1;constFred**q1=reinterpret_cast(&p1);*q1=&x;p1->inspect();p1->modify();}怎样才能做到constFred**q1=&p1通过指针转换?(我刚刚读到这可能是可能的)感谢您的回答。const_cast确实适用于对象#include#includeusingnamespacestd;classFred{inta;public:Fred(){}

C++ const 转换,不确定这是否安全

这似乎是一个愚蠢的问题,但我真的需要澄清一下:这会给我的程序带来什么危险吗?甚至还需要const_cast吗?如果我就地更改输入指针值,它将安全地与std::string一起工作,还是会产生未定义的行为?到目前为止,唯一担心的是,每当我修改输入指针并使其无法使用时,这可能会影响字符串“some_text”。std::stringsome_text="Textwithsomeinput";char*input=const_cast(some_text.c_str());谢谢你给我一些提示,我想避免自取其辱 最佳答案 作为邪恶行为的一个